今天我們要聚焦來談「安全軟體開發生命週期」,原因是,系統安全是奠基在系統開發的每一個環節上,包括需求定義、設計、開發、測試、部署等階段。特別地,如果在將安全考慮因素從「設計」階段移除,所造成之安全成本上升將比從「部署」階段移除還大很多,這反映了於「設計」階段考慮安全因素的重要性。
很多人夢寐以求安總下面這個程序,讓我來告訴您如何從無到有來建造安全軟體開發生命週期。「從零到一」是最困難的,因為「導入」新事物是一門藝術、一項工程,也就是說它存在「流程」及優先順序。先容我說句話,一個已經發布的「軟體開發生命週期」,是一切的基礎,所以如果您現在還沒有這個東西,請先回去發布好再來吧。
在安全軟體開發生命週期的每個階段,各有一道安全品質把關的大門,務必確實執行,茲分別揭示如下:
安全性需求就本質言,安總認為大可以看為「非功能性需求 (NFR)」,小可以看為「使用案例 (Use Case or User Story)」。最重要的,它可以發揮容器的功能,當安全性需求被建模成一個個構件後,我們就能啟動追蹤 (Traceability),追蹤它有沒有被設計、被實作、被驗證、被變更,或被風險管控。
一個有效的非功能性需求,除了記錄需求內容,還會說明為什麼這項需求是如此重要。以下舉幾個安全性需求,作為啟發之參考:
有一些營運測試想法我覺得不錯,在資訊系統的生命週期中必然存在測試與維運,所以提在這裡給各位參考:
老闆有令,架構大改,三十日完成。所以這個月 15 天內要完成軟體 Re-design,下個月再花 15 天修改新客戶需求和迴歸測試,然後飛機起飛 (到現場測試)。從沒有一份工作要求成長性如此之強,翻看 700 頁的軟體設計原則,挑出能應用的部分。能源回收軟體商品化,經過瘋狂投入和努力後,將看到成功的希望之光。
《無瑕的程式碼 敏捷完整篇:物件導向原則、設計模式與 C# 實踐》
《Agile principles, patterns, and practices in C#》